home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / M-More Monthly Disks / (c)m1.d64 / stars bas pr.z (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  9KB  |  296 lines

  1. 10 GOTO 50
  2. 20 SAVE"@0:STARS.BAS.PR",8
  3. 30 VERIFY"0:STARS.BAS.PR",8
  4. 40 END
  5. 50 PRINT CHR$(147) 
  6. 60 REM CLEAR SCREEN
  7. 70 REM
  8. 80 REM  STARS.BAS
  9. 90 REM BY JAMES A. INGRAM   JAN.7, 1981
  10. 100 REM ADAPTED FROM CREATIVE COMPUTING, JUNE 1983 ISSUE.
  11. 110 REM
  12. 120 REM  INSTRUCTIONS
  13. 130 PRINT CHR$(147) 
  14. 140 REM CLEAR SCREEN
  15. 150 PRINT
  16. 160 PRINT
  17. 170 PRINT "***TABLE OF VISIBLE SKY OBJECTS***"
  18. 180 PRINT "THIS PROGRAM CHECKS THROUGH A MASTER"
  19. 190 PRINT"TABLE CONTAINING STARS AND OTHER"
  20. 200 PRINT"INTERESTING OBJECTS IN THE NIGHT SKY, AND"
  21. 210 PRINT"DETERMINES WHICH ONES ARE VISIBLE"
  22. 220 PRINT"AT A SPECIFIC TIME AND DATE.  [201]T THEN"
  23. 230 PRINT"CALCULATES THE COMPASS BEARING"
  24. 240 PRINT"AND ALTITUDE ABOVE THE HORIZON FOR THAT"
  25. 250 PRINT"TIME.  THE TABLE INCLUDES THE NAME,"
  26. 260 PRINT"MAGNITUDE, RIGHT ASCENSION, DECLINATION,"
  27. 270 PRINT"BEARING, AND ALTITUDE.  NOTE THAT TIME"
  28. 280 PRINT"MUST BE ENTERED IN 24 HOUR FORMAT (2 PM=14:00)"
  29. 290 PRINT"AND THAT NUMBERS LESS THAN 10 MUST BE ENTERED"
  30. 300 PRINT"AS 2 DIGITS WITH A LEADING ZERO (05)."
  31. 310 PRINT"BEARINGS: 0 IS NORTH, EAST IS 90"
  32. 320 PRINT"          180 IS SOUTH, 270 IS WEST"
  33. 330 PRINT"CHANGE LINES 360 TO 460 FOR YOUR OWN LONGITUDE, LATITUDE, AND ZONE."
  34. 340 PRINT
  35. 350 REM
  36. 360 REM  INITIALIZE CONSTANTS
  37. 370 LNG=360-79.25 
  38. 380 REM SCARBOROUGH, ONTARIO, CANADA
  39. 390 LAT=43.75  
  40. 400 REM SOUTH END OF BOROUGH
  41. 410 GX=19      
  42. 420 REM EASTERN STANDARD TIME
  43. 430 N=91 
  44. 440 REM NUMBER OF SKY OBJECTS AVAILABLE
  45. 450 REM
  46. 460 REM  INPUT LOCAL VALUES IN THE FIVE LINES ABOVE
  47. 470 INPUT"DATE (AS MM/DD)";D$
  48. 480 INPUT"TIME (24 H CLOCK AS HH/MM)";T$
  49. 490 INPUT"STANDARD TIME (S) OR DAYLIGHT (D)";F$
  50. 500 PRINT"MAXIMUM MAGNITUDE (MIN. BRIGHTNESS) FOR TABLE":INPUTMG
  51. 510 REM
  52. 520 REM CALCULATE BASIC VALUES
  53. 530 REM DECIPHER TIME
  54. 540 TH=VAL(LEFT$(T$,2)) 
  55. 550 REM ZONE HOURS
  56. 560 TM=VAL(RIGHT$(T$,2)) 
  57. 570 REM ZONE MINUTES
  58. 580 TZ=TH+TM/60 
  59. 590 REM DECIMAL ZONE TIME
  60. 600 IF F$="D" THEN GX=GX+1 :REM CORRECT FOR DAYLIGHT SAVING TIME
  61. 610 GT=TZ-GX 
  62. 620 REM UNCORRECTED DECIMAL GMT
  63. 630 IF GT<0 THEN GT=GT+24
  64. 640 IF GT<24 THEN 670
  65. 650 GT=GT-24
  66. 660 GOTO 640
  67. 670 TL=GT+(LNG/360)*24 
  68. 680 REM UNCORRECTED LOCAL STAR TIME
  69. 690 IF TL<24 THEN 720
  70. 700 TL=TL-24
  71. 710 GOTO 690
  72. 720 TL$=STR$(INT(TL))+":"+STR$(INT((TL-INT(TL))*60)) 
  73. 730 REM STAR TIME STRING
  74. 740 GT$=STR$(INT(GT))+":"+STR$(INT((GT-INT(GT))*60)) 
  75. 750 REM GMT STRING
  76. 760 REM
  77. 770 REM  CALCULATE DAYS FROM SEPTEMBER 22
  78. 780 M=VAL(LEFT$(D$,2)) 
  79. 790 REM MONTH
  80. 800 DY=VAL(RIGHT$(D$,2)) 
  81. 810 REM DAY
  82. 820 IF DY=22 AND M=9 THEN CD=0: GOTO 1020
  83. 830 IF DY>22 AND M=9 THEN CD=DY-22 :GOTO 1020
  84. 840 IF M=10 THEN CD=8+DY :GOTO 1020
  85. 850 IF M<9 OR (M=9 AND DY<22) THEN M=M+12 :GOTO 890
  86. 860 IF M>10 THEN 890
  87. 870 PRINT"IMPROPER DATE - RE-ENTER" 
  88. 880 GOTO 470
  89. 890 R=M-10
  90. 900 CD=8
  91. 910 DIM D3(12)
  92. 920 FOR PS=1 TO 12
  93. 930 READ D3(PS)
  94. 940 NEXT PS
  95. 950 FOR X=1 TO R 
  96. 960 REM ADD UP MONTHS
  97. 970 CD=CD+D3(X)
  98. 980 NEXT X
  99. 990 DATA 31,30,31,31,28,31,30,31,30,31,31,30
  100. 1000 CD=CD+DY 
  101. 1010 REM ADD IN DAYS IN CURRENT MONTH
  102. 1020 ZLH=CD*24/365+TL
  103. 1030 IF ZLH>24 THEN ZLH=ZLH-24
  104. 1040 ZLH$=STR$(INT(ZLH))+":"+STR$(INT((ZLH-INT(ZLH))*60))
  105. 1050 REM
  106. 1060 REM  PRINT TABLE HEADING
  107. 1070 INPUT"PRINTER (Y/N)";IN$  :REM PRINTER ON
  108. 1080 PN=3 :IF IN$="Y"  THEN PN=4
  109. 1090 OPENPN,PN
  110. 1100 PRINT#PN,"  CELESTIAL OBJECT AVAILABILITY TABLE"
  111. 1110 PRINT#PN
  112. 1120 PRINT#PN
  113. 1130 PRINT#PN,"DATE ";D$;SPC(30);"DAYS FROM SEPT. 22 =";CD
  114. 1140 PRINT#PN,"LOCAL ZONE TIME ";T$;" (GMT = ";GT$;")";
  115. 1150 PRINT#PN, SPC(5);"LOCAL STAR TIME ";TL$
  116. 1160 PRINT#PN,"LATITUDE ";LAT;"DEGREES NORTH";
  117. 1170 PRINT#PN, SPC(12);"LONGITUDE ";LNG;"DEGREES EAST"
  118. 1180 PRINT#PN,"OBJECTS BRIGHTER THAN MAGNITUDE";MG;
  119. 1190 PRINT#PN, SPC(5);"ZENITH AT ";ZLH$;" HOURS RA"
  120. 1200 PRINT#PN
  121. 1210 PRINT#PN
  122. 1220 PRINT#PN,"OBJECT                  MAG";SPC(3);"R.A.";
  123. 1230 PRINT#PN,SPC(5);"DEC.";SPC(3);"BEARING";SPC(3);"ALTITUDE"
  124. 1240 PRINT#PN,"---------------------------------------";
  125. 1250 PRINT#PN,"-------------------------------"
  126. 1260 REM
  127. 1270 REM  MAIN CALCULATION LOOP
  128. 1280 LAT=LAT*6.28318/360
  129. 1290 LAT=3.14159/2-LAT
  130. 1300 FOR J=1 TO N 
  131. 1310 REM READ DATA TABLE
  132. 1320 READ N$,BR,RA$,D
  133. 1330 IF BR>MG THEN 174 0:REM BELOW BRIGHTNESS LIMIT?
  134. 1340 N$=LEFT$(N$+"                              ",20)
  135. 1350 RA=VAL(LEFT$(RA$,2))+VAL(RIGHT$(RA$,2))/60
  136. 1360 ZRA=(RA-ZLH)*15 
  137. 1370 REM POSITION FROM ZENITH LINE IN DEGREES
  138. 1380 IF ZRA>360 THEN ZRA=ZRA-360
  139. 1390 IF ZRA<0 THEN ZRA=ZRA+360
  140. 1400 ALT=90-D
  141. 1410 ZPI=ZRA*6.28318/360
  142. 1420 API=ALT*6.28318/360
  143. 1430 X=SIN(API)*COS(ZPI) 
  144. 1440 REM CONVERT TO XYZ COORDINATES
  145. 1450 Y=SIN(API)*SIN(ZPI)
  146. 1460 Z=COS(API)
  147. 1470 X1=X*COS(LAT)-Z*SIN(LAT) 
  148. 1480 REM ROTATE TO ZENITH
  149. 1490 Z1=X*SIN(LAT)+Z*COS(LAT)
  150. 1500 X=X1
  151. 1510 Z=Z1
  152. 1520 REM NOTE: ATN() FUNCTIONS BELOW ARE VALID FROM -PI/2 TO PI/2 ONLY.
  153. 1530 REM       ALTITUDE IS WITHIN THIS RANGE, BUT BEARING MUST BE TRANSLATED
  154. 1540 REM       TO COMPASS HEADING WITHIN EACH QUADRANT OF THE X-Y PLANE.
  155. 1550 A=ATN(Z/(SQR(X*X+Y*Y)))*(360/6.283)
  156. 1560 REM ALTITUDE ABOVE HORIZON
  157. 1570 IF A<0 THEN 173 0:REM BELOW HORIZON?
  158. 1580 B=ATN(Y/X)*(360/6.283)
  159. 1590 REM COMPASS BEARING
  160. 1600 IF X>0 AND Y>0 THEN B=180-B :GOTO 164  0:REM SE QUADRANT
  161. 1610 IF X>0 AND Y<0 THEN B=180-B :GOTO 164 0: REM SW QUADRANT
  162. 1620 IF X<0 AND Y>0 THEN B=-B : GOTO 164 0: REM NE QUADRANT
  163. 1630 IF X<0 AND Y<0 THEN B=360-B :GOTO 164 0:REM NW QUADRANT
  164. 1640 REM  PRINT DATA
  165. 1650 BR$=STR$(BR) :BR$=LEFT$(BR$+"    ",4)
  166. 1660 D$=STR$(D) :D$=LEFT$(D$+"     ",5)
  167. 1690 PRINT#PN, N$;SPC(3);BR$;SPC(3);RA$;SPC(3);D$;
  168. 1692 V1=3 :V2=2
  169. 1695 V=B :GOSUB 50000
  170. 1700 PRINT#PN, SPC(3);V$;
  171. 1705 V=A :GOSUB 50000
  172. 1710 PRINT#PN, SPC(6);V$
  173. 1720 REM  END OF PRINT ROUTINE
  174. 1730 REM END OF BEARING CALCULATION AND PRINT
  175. 1740 REM  END OF VISIBLE STARS ONLY ROUTINE
  176. 1750 NEXT J 
  177. 1760 REM GET NEXT STAR
  178. 1770 CLOSE PN  
  179. 1780 REM PRINTER OFF
  180. 1790 END
  181. 1800 REM
  182. 1810 REM
  183. 1820 REM  FOR Q=1 TO 500 :NEXT Q
  184. 1830 RETURN
  185. 1840 REM  FOR Q=1 TO 100 :NEXT Q
  186. 1850 RETURN
  187. 1860 REM
  188. 1870 REM  DATA TABLES
  189. 1880 DATA SIRIUS (A-CANIS MAJ) , -1.6, 06.43, -16.7
  190. 1890 DATA CANOPUS (A-CARINA), -.7,06.23,-52.7
  191. 1900 DATA ARCTURUS (A-BOOTES), -.1,14.14,19.4
  192. 1910 DATA VEGA (A-LYRA) , 0,18.36,38.8
  193. 1920 DATA CAPELLA (A-AURIGA),.1,05.14,46.1
  194. 1930 DATA RIGEL (B-ORION),.2,05.13,-8.3
  195. 1940 DATA PROCYON (A-CANIS MIN),.4,07.37,5.4
  196. 1950 DATA BETELGEUSE (A-ORION),.4,05.54,7.4
  197. 1960 DATA ALTAIR (A-AQUILA),.8,19.49,8.8
  198. 1970 DATA ALDEBARAN (A-TAURUS),.9,04.34,16.5
  199. 1980 DATA ANTARES (A-SCORPIO),1,16.28,-26.3
  200. 1990 DATA SPICA (A-VIRGO), 1,13.24,-11
  201. 2000 DATA FOMALHAUT (A-PISCIS AUST),1.2,22.56,-29.7
  202. 2010 DATA POLLUX (B-GEMINI),1.2,07.43,28.1
  203. 2020 DATA DENEB (A-CYGNUS),1.3,20.40,45.2
  204. 2030 DATA REGULUS (A-LEO),1.4,10.70,12.1
  205. 2040 DATA CASTOR (A-GEMINI),1.6,07.33,32
  206. 2050 DATA ADHARA (E-CANIS MAJ),1.6,06.57,-28.9
  207. 2060 DATA BELLATRIX (G-ORION),1.6,05.24,6.1
  208. 2070 DATA SHAULA (L-SCORPIO),1.6,17.32,-37.1
  209. 2080 DATA ELNATH (B-TAURUS),1.7,05.24,28.6
  210. 2090 DATA ALNILAM (E-ORION),1.7,05.35,-1.2
  211. 2100 DATA MIRFAK (A-PERSEUS),1.8,03.22,49.8
  212. 2110 DATA DUBHE (A-URSA MAJ),1.8,11.20,61.9
  213. 2120 DATA ALIOTH (E-URSA MAJ),1.8,12.53,56.1
  214. 2130 DATA GAMMA VELORUS,1.8,08.90,-47.3
  215. 2140 DATA KAUS AUSTRALIS (E-SAGTRS),1.8,18.22,-34.4
  216. 2150 DATA ALNITAK (Z-ORION),1.8,05.39,-2
  217. 2160 DATA AL NAIR (A-CRUS),1.8,22.60,-47.1
  218. 2170 DATA ALKAID (N-URSA MAJ),1.9,13.46,49.5
  219. 2180 DATA ALHENA (G-GEMINI),1.9,06.36,16.4
  220. 2190 DATA WEZEN (D-CANIS MAJ),1.9,07.70,-26.4
  221. 2200 DATA THETA SCORPII,1.9,17.35,-43
  222. 2210 DATA MENKALINAN (B-AURIGA),1.9,05.57,45
  223. 2220 DATA MIRZAM (B-CANIS MAJ),2,06.21,-17.9
  224. 2230 DATA DELTA VELORUM,2,08.44,-51.6
  225. 2240 DATA POLARIS (A-URSA MIN),2,02.30,89.1
  226. 2250 DATA ALPHARD (A-HYDRA),2,09.26,-8.5
  227. 2260 DATA HAMAL (A-ARIES),2,02.50,23.3
  228. 2270 DATA DIPHDA (B-CETUS),2,00.42,-18.2
  229. 2280 DATA MENKENT (TH-CENTAURI),2,14.50,-36.2
  230. 2290 DATA MIRACH (B-ANDROMEDA),2,01.88,35.5
  231. 2300 DATA NUNKI (S-SAGGTRS),2.1,18.53,-26.3
  232. 2310 DATA RASALHAQUE (A-OPHIUC),2.1,17.34,12.6
  233. 2320 DATA ALPHERATZ (A-ANDROM),2.1,00.70,28.9
  234. 2330 DATA ALGOL (B-PERSEUS),2.1,03.60,40.8
  235. 2340 DATA KOCHAB (B-URSA MIN),2.1,14.51,74.3
  236. 2350 DATA ALMACH (G-ANDROM),2.1,02.20,42.2
  237. 2360 DATA SAIPH (K-ORION),2.1,05.54,7.1
  238. 2370 DATA SCHEDAR (A-CASSIIOPEIA),2.1,00.39,56.4
  239. 2380 DATA PSI-PISCES (DBL 300,5.5,01.40,21.2
  240. 2390 DATA G-ANDROM. (OR-BL 10),2,02.20,42.2
  241. 2400 DATA B-ORION (RIGEL 9),0,05.13,-8.2
  242. 2410 DATA TH-ORION (TRAPEZ),5.5,05.34,-5.5
  243. 2420 DATA S-ORION (TRI. 11-41),4,05.37,-2.6
  244. 2430 DATA A-CANIS MAJ (SIRIUS 10),-1.5,06.44,-16.7
  245. 2440 DATA A-GEMINI (CASTOR 75),2,07.32,32
  246. 2450 DATA T-CANCER (OR-BL 31),4,08.45,29
  247. 2460 DATA G-LEO (DBL 4.5),2.5,10.18,20.2
  248. 2470 DATA Z-URSA MAJ (MIZAR 14),2.5,13.23,55.2
  249. 2480 DATA E-BOOTES (GD-BL 3),2.5,14.41,27.3
  250. 2490 DATA Z-CORONA (DBL 6),5,15.39,36.8
  251. 2500 DATA NU-DRACO (DBL 62),5,17.32,55.2
  252. 2510 DATA E-LYRA (DBL-DBL 2.7),5,18.44,39.7
  253. 2520 DATA B-CYGNI (ALBIREO 34),3,19.30,27.8
  254. 2530 DATA G-DELPHIN (YL-GR 10),4.5,20.45,16
  255. 2540 DATA NGC869 (PERSEUS GL W),4.5,02.17,57
  256. 2550 DATA NGC884 (PERSEUS CL E),4.5,02.21,57
  257. 2560 DATA NGC1528 (60 ST 25'),6.5,04.14,51.2
  258. 2570 DATA NGC 2632 (M11 BEEHIVE),4,08.39,20.1
  259. 2580 DATA NGC6523 (M8 LACOON),5,18.20,-24.4
  260. 2590 DATA NGC6618 (M17 OMEGA),7,18.19,-16.2
  261. 2600 DATA NGC6720 (M57 RING),9,18.53,33
  262. 2610 DATA NGC6853 (M27 DUMBL),7.5,19.59,22.6
  263. 2620 DATA NGC5139 (OMEGA GLOB),4,13.25,-47.4
  264. 2630 DATA NGC6205 (M13 HERC),5.5,16.41,36.5
  265. 2640 DATA NGC6656 (M22 SAGTR),6,18.35,-23.9
  266. 2650 DATA NGC1952 (M1 CRAB),8.5,05.33,22
  267. 2660 DATA ORION NEB (M12),4,05.33,-5
  268. 2670 DATA ANDROM GALAXY (M31),4.8,00.40,41
  269. 2680 DATA CANES CLUSTER (M3),6.3,13.40,29
  270. 2690 DATA WHIRLPOOL GALAXY (M51),8.1,13.28,47
  271. 2700 DATA CYGNUS CLUST (M39),5.2,21.30,48
  272. 2710 DATA OPHIUC CLUST (M10),6.7,16.55,-4
  273. 2720 DATA OHPIUC CLUSTER (M12), 6.6,16.45,-2
  274. 2730 DATA OPHIUC CLUSTER (M14),5.7,17.35,-3
  275. 2740 DATA PERSEUS SNGL CLSTR (M34),5.5,02.39,43
  276. 2750 DATA AQUARIUS CLSTR (M2),6.3,21.31,-1
  277. 2760 DATA GEMINI CLUSTER (M35),5.3,06.60,24
  278. 2770 DATA CANIS MAJ OC (M41),4.6,06.45,-21
  279. 2780 DATA MONOCEROS OC (M50),6.3,07.10,-8
  280. 50000 REM 'PRINT USING', THAT IS, ARRANGE IN COLUMNS.  FOR PET/CBM.
  281. 50001 REM  V1 IS NUMBER OF DIGITS BEFORE THE DECIMAL PLACE,
  282. 50002 REM  V2 IS THE NUMBER OF DECIMAL PLACES, AND
  283. 50003 REM  V IS THE NUMBER THAT IS REARRANGED INTO V$ IN THE FORMAT 'V1.V2'.
  284. 50004 REM  THE CALLING ROUTINE SHOULD SET V1,V2, AND V, THEN GOSUB 50000.
  285. 50005 REM  ON RETURN, V$ CAN BE PRINTED.
  286. 50006 REM  V$'S LENGTH WILL BE V1+V2+2, THE EXTRA TWO BYTES BEING FOR
  287. 50007 REM  THE SIGN AND THE DECIMAL PLACE.  IF V2=0, THE LENGTH IS V1+1.
  288. 50020 V4=INT(V*10^V2+.5)
  289. 50030 V$=RIGHT$("       "+STR$(V4),V1+V2+1):Q$=V$
  290. 50040 IF V2<1 GOTO50080
  291. 50050 FORV5=V1+2TOV1+V2+1:IF ASC(MID$(V$,V5))<48THENNEXTV5
  292. 50060 V6=V5-V1-1
  293. 50070 V$=MID$(V$,V6,V1+1)+LEFT$(".00000",V6)+MID$(V$,V5)
  294. 50080 IF ASC(V$)>47 THEN V$=LEFT$("**********",V1+V2+2+(V2=0))
  295. 50090 RETURN
  296.